/* 
 * File:   AbstractLogic.h
 * Author: RedEyedKiller
 *
 * Created on 22 Σεπτέμβριος 2010, 7:01 μμ
 */

#ifndef ABSTRACTLOGIC_H
#define	ABSTRACTLOGIC_H

namespace EntitySystem
{

class Entity;
union GameEvent;

/**
 * The abstract base class of the four main logic components of entities.
 * This difines the required interface.
 * note: that ComitEvent is abstract but has one default implementation.
 */
class AbstractLogic
{
public:

    AbstractLogic(){}

    virtual ~AbstractLogic(){}
    inline virtual void SetParent(Entity* parent)
    {
        this->parent = parent;
    }

    inline virtual Entity* GetParent() const
    {
        return parent;
    }
protected:
    Entity* parent;
};

};

#endif	/* ABSTRACTLOGIC_H */

